package ar.edu.um.entidad;

// Generated Feb 2, 2014 7:21:27 PM by Hibernate Tools 3.4.0.CR1

import java.util.Date;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 * Mensaje generated by hbm2java
 */
@Entity
@Table(name = "mensaje", catalog = "canario")
@XmlRootElement(name = "mensaje")
public class Mensaje implements java.io.Serializable {	
	private int idMensaje;
	private Usuario usuario;
	private TipoMensaje tipoMensaje;
	private Usuario usuarioDestinatario;
	private Date fechaPublicacion;
	private String mensaje;
	private Set<Tema> temas;
	private Set<Usuario> usuariosMencionados;

	public Mensaje() {
	}

	public Mensaje(int idMensaje, Usuario usuario,
			TipoMensaje tipoMensaje, Usuario usuarioDestinatario,
			Date fechaPublicacion, String mensaje) {
		this.idMensaje = idMensaje;
		this.usuario = usuario;
		this.tipoMensaje = tipoMensaje;
		this.usuarioDestinatario = usuarioDestinatario;
		this.fechaPublicacion = fechaPublicacion;
		this.mensaje = mensaje;
	}

	public Mensaje(int idMensaje, Usuario usuario,
			TipoMensaje tipoMensaje, Usuario usuarioDestinatario,
			Date fechaPublicacion, String mensaje, Set<Tema> temaMensajes,
			Set<Usuario> usuariosMencionadosMensajes) {
		this.idMensaje = idMensaje;
		this.usuario = usuario;
		this.tipoMensaje = tipoMensaje;
		this.usuarioDestinatario = usuarioDestinatario;
		this.fechaPublicacion = fechaPublicacion;
		this.mensaje = mensaje;
		this.temas = temaMensajes;
		this.usuariosMencionados = usuariosMencionadosMensajes;
	}

	@Id
	@Column(name = "idMensaje", unique = true, nullable = false)
	@XmlTransient
	public int getIdMensaje() {
		return this.idMensaje;
	}

	public void setIdMensaje(int idMensaje) {
		this.idMensaje = idMensaje;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "usuario", nullable = false)
	@XmlElement
	public Usuario getUsuario() {
		return this.usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "tipoMensaje", nullable = false)
	@XmlElement
	public TipoMensaje getTipoMensaje() {
		return this.tipoMensaje;
	}

	public void setTipoMensaje(TipoMensaje tipoMensaje) {
		this.tipoMensaje = tipoMensaje;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "usuarioDestinatario", nullable = false)
	@XmlElement
	public Usuario getUsuarioDestinatario() {
		return this.usuarioDestinatario;
	}

	public void setUsuarioDestinatario(
			Usuario usuarioDestinatario) {
		this.usuarioDestinatario = usuarioDestinatario;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fechaPublicacion", nullable = false, length = 19)
	@XmlElement
	public Date getFechaPublicacion() {
		return this.fechaPublicacion;
	}

	public void setFechaPublicacion(Date fechaPublicacion) {
		this.fechaPublicacion = fechaPublicacion;
	}

	@Column(name = "mensaje", nullable = false, length = 150)
	@XmlElement
	public String getMensaje() {
		return this.mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "mensaje")
	@XmlElement
	public Set<Tema> getTemas() {
		return this.temas;
	}

	public void setTemas(Set<Tema> temaMensajes) {
		this.temas = temaMensajes;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "mensaje")
	@XmlTransient
	public Set<Usuario> getUsuariosMencionados() {
		return this.usuariosMencionados;
	}

	public void setUsuariosMencionados(Set<Usuario> usuariosMencionadosMensajes) {
		this.usuariosMencionados = usuariosMencionadosMensajes;
	}

}
